package cn.lovemmd.model.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.lovemmd.model.admin.common.PageResult;
import cn.lovemmd.model.admin.dto.ModelDTO;
import cn.lovemmd.model.admin.entity.Model;
import cn.lovemmd.model.admin.vo.ModelVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 模型服务接口
 * 
 * @author TLS
 * @since 2024-01-01
 */
public interface ModelService extends IService<Model> {

    /**
     * 分页查询模型列表
     * 
     * @param current 当前页码
     * @param size 每页大小
     * @param search 搜索关键字
     * @param occupation 职业筛选
     * @return 分页结果
     */
    PageResult<ModelVO> getModelPage(Long current, Long size, String search, String occupation);

    /**
     * 根据ID查询模型详情
     * 
     * @param id 模型ID
     * @return 模型详情
     */
    ModelVO getModelById(Long id);

    /**
     * 添加模型
     * 
     * @param modelDTO 模型DTO
     * @return 是否成功
     */
    boolean addModel(ModelDTO modelDTO);

    /**
     * 更新模型
     * 
     * @param modelDTO 模型DTO
     * @return 是否成功
     */
    boolean updateModel(ModelDTO modelDTO);

    /**
     * 删除模型
     * 
     * @param id 模型ID
     * @return 是否成功
     */
    boolean deleteModel(Long id);

    /**
     * 批量删除模型
     * 
     * @param ids 模型ID列表
     * @return 是否成功
     */
    boolean deleteBatchModels(List<Long> ids);

    /**
     * 获取模型统计信息
     * 
     * @return 统计信息
     */
    Object getModelStats();

    /**
     * 获取所有职业列表
     * 
     * @return 职业列表
     */
    List<Object> getOccupationList();

    /**
     * 获取model_id列表
     * 
     * @return model_id列表
     */
    List<Object> getModelIdList();

    /**
     * 文件上传
     * 
     * @param file 上传的文件
     * @return 上传后的文件路径
     * @throws IOException 文件操作异常
     */
    String uploadFile(MultipartFile file) throws IOException;
}
